package com.innotek.testworkstation.common.restassured.apipage;

import com.innotek.testworkstation.common.restassured.RunRequest;
import com.innotek.testworkstation.common.restassured.testcase.CaseStepModel;
import com.innotek.testworkstation.util.FileUtil;
import io.qameta.allure.Step;

import java.io.*;
import java.util.*;

/**
 * @ClassName RunApi
 * @Description 执行所有接口测试方法
 * @Author wangx
 * @Date 2020/12/30 10:42
 * @Version 1.0
 **/

public class ApisStart {
    /**
     * 保存了所有的api对象
     */
    public List<PageModel> apis=new ArrayList<>();


    /**
     * 加载所有的api object对象，并保存到一个列表里
     * @param dir
     */
    public void loadAllApi(String dir){
        // 获取目录下的所有文件，一般都是yaml格式
        List<String> fileList = FileUtil.getAllFile(dir);
        if(fileList.size() > 0 ){
            fileList.forEach(filePath ->{
                try {
                    apis.add(PageModel.loadApi(filePath));
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
        }
    }


    /**
     * 带参数的测试用例，需要替换接口里的参数
     * 带返回校验
     * @param caseStep 测试用例步骤类

     */
    public void start(CaseStepModel caseStep){
        apis.stream().filter(api -> api.page.equals(caseStep.page)).forEach(api->{
            RunRequest request = new RunRequest();
            request.run(api.project, api.actions.get(caseStep.action), caseStep);
        });
    }



}
